Java Technologies Predicates এবং Functional Utilities এর উদাহরণ গাইড ও নোট

344

Guava লাইব্রেরি Java ডেভেলপমেন্টে প্রেডিকেটস (Predicates) এবং ফাংশনাল ইউটিলিটিস (Functional Utilities) সরবরাহ করে, যা ফাংশনাল প্রোগ্রামিং কনসেপ্টের উপর ভিত্তি করে তৈরি। এই ফিচারগুলির মাধ্যমে ডেটা ফিল্টারিং, ট্রান্সফরমেশন, এবং অন্যান্য ফাংশনাল অপারেশনগুলোকে আরও কার্যকরী এবং সহজ করা সম্ভব। Guava এর Predicate এবং Function ক্লাসগুলির সাহায্যে আপনি অধিকতর পরিষ্কার এবং কার্যকরী কোড লিখতে পারবেন। নিচে আমরা Predicates এবং Functional Utilities এর কয়েকটি গুরুত্বপূর্ণ উদাহরণ আলোচনা করব।

Predicates এর উদাহরণ

Guava Predicate ক্লাসটি একটি ফাংশনাল ইন্টারফেস যা একটি নির্দিষ্ট শর্তের উপর ভিত্তি করে যেকোনো অবজেক্টকে পরীক্ষা করতে ব্যবহৃত হয়। এটি মূলত শর্ত যাচাইয়ের জন্য ব্যবহার করা হয়, যেমন কোনো ভ্যালু সত্য (true) কিনা।

  1. সাধারণ Predicate উদাহরণ

    একটি সাধারণ Predicate ব্যবহার করে দেখানো হলো, যা একটি সংখ্যা পজিটিভ কিনা পরীক্ষা করে।

    import com.google.common.base.Predicate;
    import com.google.common.base.Predicates;
    
    public class PredicateExample {
        public static void main(String[] args) {
            Predicate<Integer> isPositive = new Predicate<Integer>() {
                @Override
                public boolean apply(Integer number) {
                    return number > 0;
                }
            };
    
            System.out.println(isPositive.apply(10));  // আউটপুট: true
            System.out.println(isPositive.apply(-5));  // আউটপুট: false
        }
    }
    
  2. Predicates.and() এবং Predicates.or()

    Predicates.and() এবং Predicates.or() মেথডগুলি দিয়ে একাধিক শর্ত একত্রে পরীক্ষা করা যায়। and() মেথডটি সমস্ত শর্তের সত্যতা পরীক্ষা করে, এবং or() মেথডটি যেকোনো একটি শর্তের সত্যতা পরীক্ষা করে।

    উদাহরণ:

    Predicate<Integer> isPositive = new Predicate<Integer>() {
        @Override
        public boolean apply(Integer number) {
            return number > 0;
        }
    };
    
    Predicate<Integer> isEven = new Predicate<Integer>() {
        @Override
        public boolean apply(Integer number) {
            return number % 2 == 0;
        }
    };
    
    Predicate<Integer> isPositiveAndEven = Predicates.and(isPositive, isEven);
    Predicate<Integer> isPositiveOrEven = Predicates.or(isPositive, isEven);
    
    System.out.println(isPositiveAndEven.apply(4));  // আউটপুট: true
    System.out.println(isPositiveOrEven.apply(3));  // আউটপুট: false
    

Functional Utilities এর উদাহরণ

Guava লাইব্রেরি ফাংশনাল প্রোগ্রামিং কনসেপ্টের জন্য আরও কিছু ইউটিলিটি মেথড প্রদান করে, যেমন Function, Functions, FluentIterable, এবং Lists.transform() ইত্যাদি। এই ফিচারগুলি কোডের পুনঃব্যবহারযোগ্যতা বাড়াতে এবং আরও সহজভাবে অপারেশন করতে সাহায্য করে।

  1. Function Interface

    Guava এর Function ইন্টারফেস ব্যবহার করে ডেটা ট্রান্সফরমেশন করা যায়। Function একটি ইনপুট নিয়ে একটি আউটপুট প্রদান করে।

    উদাহরণ:

    import com.google.common.base.Function;
    import com.google.common.collect.Lists;
    
    public class FunctionExample {
        public static void main(String[] args) {
            Function<String, Integer> stringToLength = new Function<String, Integer>() {
                @Override
                public Integer apply(String input) {
                    return input.length();
                }
            };
    
            System.out.println(stringToLength.apply("Hello"));  // আউটপুট: 5
        }
    }
    
  2. Lists.transform()

    Lists.transform() মেথডটি একটি List এর প্রতিটি উপাদানকে একটি নির্দিষ্ট ফাংশন দিয়ে ট্রান্সফর্ম (পরিবর্তন) করতে ব্যবহৃত হয়।

    উদাহরণ:

    import com.google.common.collect.Lists;
    import com.google.common.base.Function;
    
    import java.util.List;
    
    public class ListsTransformExample {
        public static void main(String[] args) {
            List<String> names = Lists.newArrayList("Alice", "Bob", "Charlie");
    
            // প্রতিটি নামের দৈর্ঘ্য বের করতে একটি Function ব্যবহার করা
            List<Integer> nameLengths = Lists.transform(names, new Function<String, Integer>() {
                @Override
                public Integer apply(String name) {
                    return name.length();
                }
            });
    
            System.out.println(nameLengths);  // আউটপুট: [5, 3, 7]
        }
    }
    
  3. FluentIterable

    Guava এর FluentIterable ক্লাসটি একটি ইন্টারফেস যা একটি সংগ্রহের উপর লজিকাল অপারেশনগুলোকে সহজভাবে চেইনিং করতে সহায়ক। এটি বিভিন্ন ফাংশনাল অপারেশন একসাথে চেইন করে ব্যবহার করা যেতে পারে।

    উদাহরণ:

    import com.google.common.collect.FluentIterable;
    
    public class FluentIterableExample {
        public static void main(String[] args) {
            FluentIterable<String> iterable = FluentIterable.from(Lists.newArrayList("Apple", "Banana", "Cherry"))
                    .transform(new Function<String, String>() {
                        @Override
                        public String apply(String input) {
                            return input.toUpperCase();
                        }
                    });
    
            System.out.println(iterable.toList());  // আউটপুট: [APPLE, BANANA, CHERRY]
        }
    }
    
  4. Functions.compose()

    Functions.compose() মেথডটি দুটি ফাংশনকে একত্রিত করতে ব্যবহৃত হয়। এটি প্রথমে একটি ফাংশন প্রয়োগ করে তারপর তার আউটপুটের উপর আরেকটি ফাংশন প্রয়োগ করে।

    উদাহরণ:

    import com.google.common.base.Function;
    import com.google.common.base.Functions;
    
    public class FunctionComposeExample {
        public static void main(String[] args) {
            Function<String, Integer> toLength = new Function<String, Integer>() {
                @Override
                public Integer apply(String input) {
                    return input.length();
                }
            };
    
            Function<Integer, String> toString = new Function<Integer, String>() {
                @Override
                public String apply(Integer input) {
                    return "Length: " + input;
                }
            };
    
            // Functions.compose() দ্বারা দুটি ফাংশন একত্রিত করা
            Function<String, String> lengthDescription = Functions.compose(toString, toLength);
    
            System.out.println(lengthDescription.apply("Hello"));  // আউটপুট: Length: 5
        }
    }
    

Guava লাইব্রেরি Java ডেভেলপমেন্টে Predicate এবং ফাংশনাল ইউটিলিটিগুলির মাধ্যমে কোডের কার্যক্ষমতা ও পরিষ্কারতা অনেক বৃদ্ধি করতে সাহায্য করে। Predicate শর্ত যাচাইয়ের জন্য এবং Function ডেটা ট্রান্সফরমেশন এর জন্য খুবই কার্যকরী, এবং ফাংশনাল প্রোগ্রামিং কনসেপ্টের এই সরঞ্জামগুলি কোড লেখার প্রক্রিয়া অনেক সহজ এবং কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...